Архитектура ОС

Планирование задач. Диспетчеризация

Архитектура ОС

План лекции

1. Основные понятия и цели планирования

2. Уровни планирования

3. Классификация алгоритмов планирования

4. Классические алгоритмы планирования

5. Продвинутые алгоритмы планирования

6. Планирование в многопроцессорных системах

7. Планирование в системах реального времени

8. Потоки и планирование

9. Оценка и анализ алгоритмов

10. Современные тенденции и разработки

Планирование задач. Диспетчеризация
Архитектура ОС

Введение

Планирование задач — одна из фундаментальных функций ОС, обеспечивающая эффективное распределение процессорного времени между процессами.

Диспетчеризация определяет, какой процесс будет выполняться и как долго он будет использовать процессор.

Планирование задач. Диспетчеризация
Архитектура ОС

1. Основные понятия и цели планирования

Что такое планирование задач

Планирование задач — процесс выбора следующего процесса для выполнения на процессоре.

  • Выбор процесса: определение, какой процесс получит процессор
  • Время выполнения: как долго процесс будет использовать процессор
  • Переключение контекста: сохранение и восстановление состояния процессов
Планирование задач. Диспетчеризация
Архитектура ОС

Цели планирования

Производительность:

  • Максимизация пропускной способности
  • Минимизация времени выполнения
  • Минимизация времени ожидания

Отзывчивость:

  • Минимизация времени отклика
  • Предсказуемость для интерактивных процессов
Планирование задач. Диспетчеризация
Архитектура ОС

Критерии эффективности

Справедливость:

  • Равномерное распределение процессорного времени
  • Предотвращение голодания процессов
  • Учёт приоритетов различных процессов

Ресурсоиспользование:

  • Максимизация загрузки процессора
  • Балансировка нагрузки
  • Энергоэффективность
Планирование задач. Диспетчеризация
Архитектура ОС

2. Уровни планирования

Долгосрочное планирование (Long-term)

Определяет, какие процессы будут загружены в систему для выполнения.

Функции:

  • Контроль степени мультипрограммирования
  • Выбор процессов из пула заданий
  • Балансировка нагрузки между процессорами

Характеристики:

  • Редкое выполнение (секунды, минуты)
  • Долгое время принятия решений
  • Определяет общую загрузку системы
Планирование задач. Диспетчеризация
Архитектура ОС

Среднесрочное планирование (Medium-term)

Управляет обменом процессами между основной памятью и диском.

Функции:

  • Управление памятью: загрузка и выгрузка процессов
  • Снижение степени мультипрограммирования
  • Поддержание оптимального числа процессов в памяти

Особенности:

  • Swapping — перемещение процессов между памятью и диском
  • Управление рабочим набором
  • Предотвращение трэшинга
Планирование задач. Диспетчеризация
Архитектура ОС

Краткосрочное планирование (Short-term)

Определяет, какой из готовых процессов получит процессор следующим.

Функции:

  • Выбор следующего процесса из очереди готовых
  • Переключение контекста
  • Распределение процессорного времени (квант)

Характеристики:

  • Очень частое выполнение (миллисекунды)
  • Критическое влияние на отзывчивость системы
  • Требует быстрых и эффективных алгоритмов
Планирование задач. Диспетчеризация
Архитектура ОС

3. Классификация алгоритмов планирования

По типу принятия решений

Превентивные (Preemptive):

  • Принудительное прерывание процесса
  • Гарантия справедливости
  • Лучшая отзывчивость

Не превентивные (Non-preemptive):

  • Добровольная передача управления
  • Простота реализации
  • Риск монополизации процессора
Планирование задач. Диспетчеризация
Архитектура ОС

По информации о процессах

Без учёта времени выполнения:

  • FCFS (First-Come-First-Served)
  • Round Robin
  • Приоритетные алгоритмы

С учётом времени выполнения:

  • SJF (Shortest Job First)
  • SRTF (Shortest Remaining Time First)
  • Многоуровневые алгоритмы
Планирование задач. Диспетчеризация
Архитектура ОС

По количеству очередей

Одноочередные:

  • Единая очередь для всех процессов
  • Простота управления
  • Ограниченная гибкость

Многоочередные:

  • Разделение процессов по категориям
  • Разные стратегии для разных типов
  • Больше параметров настройки
Планирование задач. Диспетчеризация
Архитектура ОС

4. Классические алгоритмы

FCFS (First-Come-First-Served)

Простейший алгоритм, реализующий принцип очереди (FIFO).

  • Процессы выполняются в порядке поступления
  • Не превентивный: процесс выполняется до завершения

Преимущества:

  • Простота реализации
  • Минимальные накладные расходы
  • Отсутствие голодания

Недостатки:

  • Эффект конвоя: длинные процессы блокируют короткие
  • Плохая отзывчивость для интерактивных задач
Планирование задач. Диспетчеризация
Архитектура ОС

SJF (Shortest Job First)

Алгоритм, выбирающий процесс с наименьшим временем выполнения.

  • Может быть превентивным (SRTF) или не превентивным
  • Требует знания или оценки времени выполнения

Преимущества:

  • Оптимальное среднее время ожидания (математический оптимум)
  • Эффективное использование ресурсов

Недостатки:

  • Сложность предсказания времени выполнения
  • Возможность голодания длинных процессов
Планирование задач. Диспетчеризация
Архитектура ОС

Round Robin

Циклический алгоритм с фиксированным квантом времени.

  • Каждый процесс получает фиксированный квант времени qq
  • По истечении кванта процесс перемещается в конец очереди
  • Циклическое переключение между всеми готовыми процессами

Влияние кванта времени:

  • При qq \to \infty вырождается в FCFS
  • При q0q \to 0 — чрезмерные накладные расходы на переключение контекста
  • Типичные значения: q=10100q = 10\text{--}100 мс
Планирование задач. Диспетчеризация
Архитектура ОС

Приоритетное планирование

Каждому процессу назначается приоритет; процесс с наивысшим приоритетом выполняется первым.

Типы приоритетов:

  • Внутренние — определяются ОС (время ожидания, ресурсы)
  • Внешние — устанавливаются пользователями или администраторами
  • Динамические — изменяются во времени

Проблемы и решения:

  • Голодание низкоприоритетных процессов → старение приоритетов
  • Инверсия приоритетов → наследование приоритетов
Планирование задач. Диспетчеризация
Архитектура ОС

5. Продвинутые алгоритмы

Многоуровневая очередь (Multilevel Queue, MLQ)

Разделение процессов на классы с различными стратегиями.

Структура:

  • Несколько очередей для разных типов процессов
  • Иерархия приоритетов между очередями
  • Разные алгоритмы для каждой очереди

Примеры уровней:

  • Системные процессы — высший приоритет, краткие кванты
  • Интерактивные — средний приоритет, умеренные кванты
  • Пакетные — низший приоритет, длинные кванты
Планирование задач. Диспетчеризация
Архитектура ОС

Многоуровневая обратная очередь (MLFQ)

Адаптивный алгоритм, позволяющий процессам перемещаться между уровнями.

Механизмы:

  • Понижение приоритета — для процессов, использующих много CPU
  • Повышение приоритета — для долго ожидающих процессов (старение)
  • Динамическое выделение квантов — изменение размера кванта по уровням

Преимущества:

  • Адаптивность: автоматическая настройка под характер процессов
  • Эффективность без предварительной информации
  • Универсальность для смешанных рабочих нагрузок
Планирование задач. Диспетчеризация
Архитектура ОС

Гарантированное планирование

Обеспечивает каждому процессу гарантированную долю процессорного времени.

  • Гарантированная доля: каждый процесс получает определённый процент CPU
  • Пропорциональность: распределение согласно весам или приоритетам
  • Предсказуемость: детерминированное поведение системы

Применение:

  • Системы реального времени — гарантированные сроки
  • Мультимедийные системы — постоянный битрейт
  • Критические приложения — предсказуемая производительность
Планирование задач. Диспетчеризация
Архитектура ОС

Справедливое планирование (Fair Share Scheduling)

Учитывает справедливость между пользователями или группами.

  • Группировка процессов по пользователям, группам или приложениям
  • Справедливое распределение ресурсов между группами
  • Иерархическое планирование: сначала между группами, затем внутри

Преимущества:

  • Предотвращение монополизации ресурсов одним пользователем
  • Гибкость управления: разные политики для разных групп
  • Поддержка квот и ограничений
Планирование задач. Диспетчеризация
Архитектура ОС

6. Планирование в многопроцессорных системах

Особенности многопроцессорного планирования

Сложности:

  • Выбор процессора для выполнения процесса
  • Балансировка нагрузки между ядрами
  • Локальность данных: учёт кэшей и NUMA-архитектур
  • Синхронизация между планировщиками

Подходы:

  • Мастер-слейв: один процессор управляет планированием
  • Симметричное (SMP): каждый процессор планирует самостоятельно
  • Гибридное: комбинация подходов
Планирование задач. Диспетчеризация
Архитектура ОС

Аффинность процессора (Processor Affinity)

Механизм, предпочитающий запуск процесса на том же процессоре, где он выполнялся ранее.

Типы аффинности:

  • Мягкая (soft): рекомендация, но не обязательство
  • Жёсткая (hard): обязательное выполнение на определённом процессоре
  • Групповая: для связанных процессов

Преимущества:

  • Сохранение данных в кэше — повышение производительности
  • Снижение накладных расходов на переключение контекста
  • Предсказуемое поведение системы
Планирование задач. Диспетчеризация
Архитектура ОС

Балансировка нагрузки (Load Balancing)

Распределение нагрузки между процессорами для оптимального использования ресурсов.

Стратегии:

  • Push-миграция: перемещение с перегруженных на свободные процессоры
  • Pull-миграция: свободные процессоры забирают задачи из очередей
  • Адаптивная: динамический выбор стратегии

Факторы для учёта:

  • Текущая загрузка процессоров
  • Вычислительные требования процессов
  • Локальность данных в памяти
Планирование задач. Диспетчеризация
Архитектура ОС

7. Планирование в системах реального времени

Особенности планирования реального времени

Требования:

  • Жёсткие сроки выполнения
  • Детерминизм и предсказуемость
  • Низкая задержка реакции
  • Высокая надёжность и отказоустойчивость

Типы задач:

  • Периодические — выполняются через регулярные интервалы
  • Апериодические — выполняются по запросу
  • Спорадические — случайные, но с ограничениями
Планирование задач. Диспетчеризация
Архитектура ОС

Алгоритмы планирования реального времени

Rate Monotonic (RMS):

  • Чем выше частота, тем выше приоритет
  • Для периодических задач
  • Оптимален для статических приоритетов
  • Условие: CiTin(21/n1)\sum \frac{C_i}{T_i} \le n(2^{1/n}-1)

Earliest Deadline First (EDF):

  • Ближайший дедлайн — наивысший приоритет
  • Для динамических приоритетов
  • Подходит для смешанных типов задач

Least Laxity First (LLF):

  • Li=ditCiremL_i = d_i - t - C_i^{\text{rem}}
Планирование задач. Диспетчеризация
Архитектура ОС

Анализируемость систем реального времени

Проверка на планируемость:

  • Математический анализ — доказательство выполнимости
  • Симуляция — моделирование поведения системы
  • Мониторинг — отслеживание времени выполнения

Критерии:

  • Суммарная загрузка процессора <100%< 100\%
  • Все крайние сроки должны соблюдаться
  • Запас времени для непредвиденных ситуаций
Планирование задач. Диспетчеризация
Архитектура ОС

8. Потоки и планирование

Различия между планированием процессов и потоков

Уровни планирования:

  • Пользовательский: планировщик потоков в пространстве пользователя
  • Ядерный: планировщик потоков в ядре ОС
  • Комбинированный: гибридный подход

Преимущества потоков:

  • Легковесность — быстрое переключение
  • Разделение ресурсов — общее адресное пространство
  • Параллелизм — одновременное выполнение
Планирование задач. Диспетчеризация
Архитектура ОС

Модели планирования потоков

Пользовательский уровень:

  • Быстрое переключение
  • Масштабируемость
  • Блокировка всего процесса при I/O
  • Нет истинного параллелизма

Ядерный уровень:

  • Истинный параллелизм
  • Лучшая масштабируемость
  • Больше накладных расходов
  • Сложность управления

Гибридные модели:

  • Баланс производительности и функциональности
Планирование задач. Диспетчеризация
Архитектура ОС

9. Оценка и анализ алгоритмов

Критерии оценки

Количественные метрики:

  • Среднее время ожидания
  • Среднее время выполнения
  • Пропускная способность
  • Загрузка процессора
  • Время отклика

Качественные характеристики:

  • Справедливость распределения
  • Предсказуемость поведения
  • Адаптивность к изменениям нагрузки
Планирование задач. Диспетчеризация
Архитектура ОС

Методы анализа

Аналитические методы:

  • Теория очередей
  • Марковские процессы
  • Сетевые модели

Экспериментальные методы:

  • Симуляция поведения системы
  • Профилирование производительности
  • Сравнительное тестирование

Инструменты:

  • Трассы выполнения
  • Мониторинг производительности
  • Визуализация результатов
Планирование задач. Диспетчеризация
Архитектура ОС

Сравнительный анализ алгоритмов

FCFS vs Round Robin:

  • FCFS: простота, но плохая отзывчивость
  • RR: хорошая отзывчивость, но накладные расходы

SJF vs Priority:

  • SJF: оптимальное среднее время, возможно голодание
  • Priority: гибкость, требует настройки

Многоуровневые алгоритмы:

  • MLQ: статическая структура, простота
  • MLFQ: динамическая адаптация, сложность реализации

Компромиссы:

  • Справедливость vs Производительность
  • Отзывчивость vs Накладные расходы
Планирование задач. Диспетчеризация
Архитектура ОС

10. Современные тенденции

Энергоэффективное планирование

Зелёные алгоритмы:

  • Динамическое изменение частоты процессора (DVFS)
  • Переход в низкоэнергетические режимы
  • Термическое управление — предотвращение перегрева

Стратегии:

  • Консолидация задач на минимальном числе ядер
  • Балансировка между производительностью и энергопотреблением
  • Предиктивное управление — прогнозирование нагрузки
Планирование задач. Диспетчеризация
Архитектура ОС

Планирование в облачных системах

Особенности:

  • Масштабируемость: управление тысячами виртуальных машин
  • Мультиарендность: изоляция между пользователями
  • Гибкость: динамическое выделение ресурсов

Алгоритмы:

  • VM-aware: учёт виртуализации и накладных расходов
  • Container-aware: специфика контейнерных технологий
  • Serverless: планирование функций без управления инфраструктурой
Планирование задач. Диспетчеризация
Архитектура ОС

Машинное обучение в планировании

Применение ИИ:

  • Предиктивное планирование — прогнозирование поведения процессов
  • Адаптивные алгоритмы — самонастройка под рабочую нагрузку
  • Оптимизация параметров — автоматическая настройка квантов и приоритетов

Преимущества:

  • Автоматическая оптимизация под конкретные приложения
  • Персонализация настроек
  • Прогнозирование будущих требований
Планирование задач. Диспетчеризация
Архитектура ОС

Будущие направления

Квантовые компьютеры:

  • Планирование квантовых задач
  • Гибридные системы: классические и квантовые процессы

Нейроморфные вычисления:

  • Вдохновлённые биологическими системами
  • Планирование в нейроморфных архитектурах

Этические аспекты:

  • Справедливость ИИ: устранение предвзятости
  • Прозрачность принятия решений
  • Конфиденциальность данных
Планирование задач. Диспетчеризация
Архитектура ОС

Заключение

Планирование задач — критически важный компонент ОС, определяющий её эффективность, отзывчивость и справедливость.

Фундаментальные принципы:

  • Балансировка — компромисс между различными целями
  • Адаптивность — гибкость в изменяющихся условиях
  • Эффективность — минимизация накладных расходов
  • Справедливость — предотвращение голода и монополизации

Выбор алгоритма зависит от типа системы, характера нагрузки и требований к производительности.

Планирование задач. Диспетчеризация
Архитектура ОС

Ключевые выводы лекции

  • Три уровня планирования: долгосрочное, среднесрочное, краткосрочное

  • FCFS и SJF — базовые алгоритмы с понятными компромиссами

  • Round Robin — основной алгоритм для интерактивных систем

  • Приоритетное планирование — гибкость, но риск голодания

  • MLQ и MLFQ — адаптивные многоуровневые подходы

  • Многопроцессорное планирование требует учёта аффинности и балансировки

  • RMS и EDF — основные алгоритмы реального времени

  • Современные тренды: энергоэффективность, облака, ML

Планирование задач. Диспетчеризация
Архитектура ОС

Вопросы для самоконтроля

  1. В чём различие между долгосрочным, среднесрочным и краткосрочным планированием?
  2. Какие критерии эффективности используются для оценки алгоритмов планирования?
  3. В чём заключается эффект конвоя в алгоритме FCFS?
  4. Почему SJF обеспечивает оптимальное среднее время ожидания и каковы его ограничения?
  5. Как влияет размер кванта времени на производительность Round Robin?
  6. Что такое инверсия приоритетов и как она решается?
  7. Чем MLFQ отличается от MLQ?
  8. Какие стратегии балансировки нагрузки применяются в многопроцессорных системах?
  9. В чём различие между алгоритмами RMS и EDF для систем реального времени?
  10. Какие преимущества даёт применение машинного обучения в планировании?
Планирование задач. Диспетчеризация
Архитектура ОС

Рекомендуемые ресурсы

Основная литература:

  1. Таненбаум Э., Бос Х. Современные операционные системы. 4-е изд.
  2. Столлингс В. Операционные системы. 9-е изд.

Дополнительная литература:

  1. Silberschatz A., Galvin P., Gagne G. Operating System Concepts. 10th ed.
  2. Love R. Linux Kernel Development. 3rd ed.

Онлайн-ресурсы:

  1. Andrew S. Tanenbaum. Modern Operating Systems (Lecture Materials)
  2. Linux CFS Scheduler — документация ядра Linux
  3. Operating Systems: Three Easy Pieces (OSTEP) — ostep.org
Планирование задач. Диспетчеризация

Кратко обозначим структуру лекции. Пройдём от базовых понятий до современных алгоритмов планирования, включая многопроцессорные системы и системы реального времени.

Планирование — ключевая функция ОС. Без неё процессы не смогли бы совместно использовать процессор. Разберём, как ОС решает, кому и на сколько отдавать процессорное время.

Три ключевых аспекта планирования: какой процесс выбрать, как долго он работает и как переключить контекст. Это фундамент для всех последующих алгоритмов.

Две главные группы целей — производительность и отзывчивость. Для пакетных систем важнее throughput, для интерактивных — время отклика.

Справедливость и эффективность ресурсов — ещё два критерия. Обратите внимание на предотвращение голодания: это ключевая проблема многих алгоритмов.

Переходим к уровням планирования. Долгосрочное работает редко — секунды и минуты. Его главная задача — контроль степени мультипрограммирования.

Среднесрочное планирование отвечает за swapping — обмен процессами между памятью и диском. Критически важно для предотвращения трэшинга.

Краткосрочное планирование — самый частый уровень, работает каждую миллисекунду. Именно здесь алгоритмы показывают свою эффективность.

Превентивные алгоритмы принудительно прерывают процесс — лучшая отзывчивость, но нужен таймер. Непревентивные проще, но возможна монополизация процессора.

Разделение по доступности информации о времени выполнения. Алгоритмы без этой информации проще, с ней — потенциально эффективнее.

Многоочередные системы позволяют разделять процессы по категориям и применять разные стратегии. Это основа для MLQ и MLFQ, которые рассмотрим далее.

Простейший алгоритм — как очередь в магазине. Главный минус — эффект конвоя: короткий процесс может долго ждать за одним длинным.

SJF даёт математически оптимальное среднее время ожидания. Проблема: время выполнения обычно неизвестно — его оценивают по прошлому поведению процесса.

Round Robin — самый распространённый алгоритм для интерактивных систем. Ключевой параметр — размер кванта: слишком малый даёт накладные расходы, слишком большой — плохую отзывчивость.

Приоритетное планирование гибко, но создаёт проблему голодания. Решение — старение приоритетов: чем дольше ждёт процесс, тем выше его приоритет.

Многоуровневая очередь — статическое разделение. Системные процессы наверху, пакетные внизу. Процессы не мигрируют — это и ограничение, и простота.

MLFQ — один из самых практичных алгоритмов. Он автоматически определяет тип процесса по поведению и не требует априорной информации о задачах.

Этот подход гарантирует каждому процессу определённую долю CPU. Особенно важен в мультимедийных системах и системах реального времени, где предсказуемость критична.

Fair Share учитывает не только процессы, но и пользователей. Без него один пользователь может запустить десятки процессов и монополизировать процессор.

Переходим к многопроцессорным системам. Главная сложность — не только выбрать задачу, но и выбрать правильный процессор, учитывая локальность данных и кэши.

Аффинность пытается удержать процесс на том же ядре для использования кэша. Мягкая — рекомендация, жёсткая — строгое ограничение, важное в real-time системах.

Push и pull миграции — два подхода к балансировке. В современных ОС обычно используется комбинация обоих для оптимального распределения нагрузки между ядрами.

В системах реального времени сроки выполнения — не пожелание, а требование. Нарушение дедлайна в hard real-time ведёт к катастрофическим последствиям.

RMS назначает приоритеты по частоте — просто и эффективно. EDF более гибок, но сложнее в реализации. LLF учитывает запас времени до дедлайна.

Перед запуском real-time системы нужно доказать, что все дедлайны будут соблюдены. Используются формулы достаточного условия и симуляция.

Потоки легче процессов — переключение быстрее, ресурсы разделяются. Но добавляется сложность: кто планирует — ядро или пользовательская библиотека?

Пользовательские потоки быстрые, но без истинного параллелизма. Ядерные дают параллелизм, но дороже. Гибридные модели пытаются совместить лучшее из обоих миров.

Для сравнения алгоритмов нужны метрики — количественные и качественные. Нет идеального алгоритма, есть оптимальный для конкретной задачи.

Аналитические методы дают теоретические оценки, экспериментальные — практические. Хороший анализ использует оба подхода и подкрепляется инструментами мониторинга.

Каждый алгоритм имеет компромиссы. FCFS прост, но несправедлив; RR отзывчив, но с накладными расходами; MLFQ адаптивен, но сложен в реализации.

Современный тренд — «зелёные» алгоритмы. DVFS снижает частоту процессора для экономии энергии. Консолидация задач уменьшает число активных ядер.

В облаках планировщик управляет тысячами виртуальных машин и контейнеров. Serverless — новый уровень абстракции, где планирование скрыто от разработчика.

ML позволяет автоматически настраивать параметры планировщика под конкретную нагрузку. Вместо статических эвристик — адаптивные модели, обучающиеся на поведении процессов.

Квантовые и нейроморфные вычисления потребуют принципиально новых подходов к планированию. Этические аспекты тоже важны — ИИ-планировщики должны быть прозрачными.

Подведём итоги. Четыре фундаментальных принципа: балансировка, адаптивность, эффективность и справедливость. Выбор алгоритма всегда зависит от контекста.

Главные тезисы лекции в концентрированном виде. Рекомендую запомнить ключевые алгоритмы и их компромиссы — это основа для экзамена.

Используйте эти вопросы для проверки понимания материала. Если можете ответить на все десять — тема усвоена хорошо.

Для углублённого изучения рекомендую Таненбаума и OSTEP. Документация Linux CFS — отличный пример реального планировщика в production.